// pages/login/login.js
import { phoneTest } from '../../utils/utils'
import request from '../../utils/request'
/* 
  登录流程
  1. 收集表单项数据
  2. 前端验证
  (1) 用户信息(帐号，密码)是否合法
  (2) 前端验证不通过就提示用户，不需要发请求给后端
  (3) 前端验证通过了，发请求(携带帐号，密码)给服务器
  3. 后端验证
  (1) 验证用户是否存在
  (2) 用户不存在直接返回,告诉前端用户不存在
  (3) 用户存在需要验证密码是否正确 
  (4) 密码不正确返回给前端提示密码不正确
  (5) 密码正确返回给前端数据，提示用户登录成功(会携带用户的相关信息)
*/

Page({
  /**
   * 页面的初始数据
   */
  data: {
    phone: '', // 手机号
    password: '', // 用户的密码
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {},

  // 表单项内容发生改变的回调
  handleInput(e) {
    let type = e.target.id
    this.setData({
      [type]: e.detail.value,
    })
  },
  // 登录对应的回调
  async login() {
    let { phone, password } = this.data
    // 手机号验证
    // 1.内容为空
    // 2.手机号格式不正确
    // 3.手机号格式正确，验证通过
    if (!phone.trim())
      // 提示用户
      return wx.showToast({
        title: '手机号为空',
        icon: 'error',
        duration: 1500,
        mask: false,
      })
    if (!phoneTest.test(phone.trim()))
      return wx.showToast({
        title: '手机号格式错误',
        icon: 'error',
        duration: 1500,
        mask: false,
      })
    if (!password)
      return wx.showToast({
        title: '密码为空',
        icon: 'error',
        duration: 1500,
        mask: false,
      })

    //后端验证
    const res = await request('/login/cellphone', {
      phone,
      password,
      isLogin: true,
    })
    if (res.code !== 200) {
      if (res.msg === '') res.msg = '网络错误'
      return wx.showToast({
        title: res.msg,
        icon: 'error',
        duration: 1500,
        mask: false,
      })
    }
    wx.showToast({
      title: '登录成功',
      icon: 'success',
      duration: 1500,
      mask: false,
    })
    // wx.switchTab({
    //   url: '/pages/personal/personal',
    // })
    wx.reLaunch({
      url: '/pages/personal/personal',
    })
    //将用户的信息存储至本地
    wx.setStorageSync('userInfo', JSON.stringify(res.profile))
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {},
})
